package org.lee.status.app;

import org.lee.status.app.activity.Status;

/**
 * State
 * 状态机
 *
 * @author dralee
 * @date 2021-11-24 09:43:05
 **/
public abstract class State {

    /**
     * 活动提审
     *
     * @param activityId    活动Id
     * @param currentStatus 当前状态
     * @return
     */
    public abstract Result arraignment(String activityId, Status currentStatus);

    /**
     * 审核通过
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result checkPass(String activityId, Status currentStatus);

    /**
     * 审核拒绝
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result checkRefuse(String activityId, Status currentStatus);

    /**
     * 审核撤消
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result checkRevoke(String activityId, Status currentStatus);

    /**
     * 活动关闭
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result close(String activityId, Status currentStatus);

    /**
     * 活动开启
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result open(String activityId, Status currentStatus);

    /**
     * 执行活动
     *
     * @param activityId
     * @param currentStatus
     * @return
     */
    public abstract Result doing(String activityId, Status currentStatus);

}
